package com.tobby.camel.camelinaction.chapter6.firsttest;

import java.io.File;
import org.apache.camel.Exchange;
import org.apache.camel.test.spring.CamelSpringTestSupport;
import org.junit.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringFirstTest extends CamelSpringTestSupport {

	@Override
	protected AbstractApplicationContext createApplicationContext() {
		return new ClassPathXmlApplicationContext(
				"com/tobby/camel/camelinaction/chapter6/firsttest/firststep.xml");
	}

	@Override
	public void setUp() throws Exception {
		// delete directories so that we have a clean start
		deleteDirectory("target/inbox");
		deleteDirectory("target/outbox");
		super.setUp();
	}

	@Test
	public void testMoveFile() throws InterruptedException {
		// create a new file in the inbox with the name hello.txt and containing Hello
		// World as body
		template.sendBodyAndHeader("file://target/inbox", "Hello World",
				Exchange.FILE_NAME, "hello.txt");

		// wait a while to let the file be moved
		Thread.sleep(2000);

		// test the file was moved
		File target = new File("target/outbox/hello.txt");
		assertTrue("File not moved", target.exists());

		// test that its content is correct as well
		String content = context.getTypeConverter().convertTo(String.class, target);
		assertEquals("Hello World", content);
	}

}
